package com.m3958.firstgwt.server.dao;


import net.sf.json.JSONArray;

import com.m3958.firstgwt.server.model.User;
import com.m3958.firstgwt.server.model.WFChangeLog;


public class WFChangeLogChangeStrategy extends BaseModelChangeStrategy implements ModelChangeStrategy<WFChangeLog> {

	@Override
	public boolean extraPersistTask(WFChangeLog model){
		//changeLog的创建者必须是project的创建者（这样原作者在登录编辑时，可以及时反馈到变化），这两者的一致可以简化逻辑。，而changeLog的内容可能既包含share的条目，也包括不share的条目，这是个问题。
		//这里必须通过查询changeDelta中的客户端change条目来查找uid。
		//但是changeLog携带的rootEntry，可以通过设置mid提供另一种同步方法。这是正解。
		//可以携带一个uid参数。每个changeLog的creator，在客户端来说，都必须和存在于页面上的project的uid一致。
		int uid = getReqPs().getIdValue("uid"); 
		if(uid == -1){
			;
		}else{
			if(model.getCreator() != null && model.getCreator().getId() != uid){
				User user = emp.get().find(User.class, uid);
				model.setCreator(user);
			}
		}
		return true;
	}

	@Override
	public boolean extraUpdateTask(WFChangeLog model,WFChangeLog newModel){
		return true;
	}
	
	@Override
	public boolean extraRemoveTask(WFChangeLog model) {
		return true;
	}

	@Override
	public boolean afterPersist(WFChangeLog model) {
		//必须解析changeLog，然后分离出需要根据projectId保存的changeLog
		String cl = model.getChangeDelta();
		JSONArray clja = JSONArray.fromObject(cl);
//		{"uuid":"ef61d10c-67b0-497a-9f2c-cfefe4715b5b","uid":"1","title":"","note":"","path":"d6ba753f-073f-449e-9b68-1d93a92f418c,68758fef-babe-46ca-9f57-cab5b67e2fd9","dp":"68758fef-babe-46ca-9f57-cab5b67e2fd9","done":false,"position":917504,"open":false,"action":"add","mid":"ef61d10c-67b0-497a-9f2c-cfefe4715b5b"}
		return false;
	}
	
}

	
